package com.px.business.mapper;

import com.px.business.domain.EvaluationIndicator;
import com.px.business.domain.dto.IndicatorRangeDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 品讯科技
 */
@Repository
@Mapper
public interface EvaluationIndicatorMapper {

    /**
     * 查询指标
     *
     * @param evaluationIndicator 指标
     * @return 结果
     */
    List<EvaluationIndicator> selectEvaluationList(EvaluationIndicator evaluationIndicator);

    /**
     * 查询指标 评估申请界面添加评估项使用 返回所有启用指标且有值域
     * @param evaluationIndicator
     * @return
     */
    List<EvaluationIndicator> selectEvaluationListForAddEvaluation(EvaluationIndicator evaluationIndicator);

    /**
     * 新增指标
     *
     * @param evaluationIndicator 指标
     * @return 结果
     */
    int insertEvaluation(EvaluationIndicator evaluationIndicator);

    int addHandEvaluation(EvaluationIndicator evaluationIndicator);


    /**
     * 校验描述
     *
     * @param evaluationIndicatorDescription 指标描述
     * @param parentId                       父ID
     * @return 结果
     */
    EvaluationIndicator checkEvaluationNameUnique(@Param("evaluationIndicatorDescription") String evaluationIndicatorDescription, @Param("parentId") Long parentId);

    /**
     * 删除指标
     *
     * @param evaluationIndicatorId 指标标识
     * @return 结果
     */
    int deleteEvaluationIndicatorId(Long evaluationIndicatorId);

    /**
     * 更新指标域
     *
     * @param evaluationIndicator 指标
     * @return 结果
     */
    int updateEvaluation(EvaluationIndicator evaluationIndicator);

    /**
     * 根据指标ID获取指标信息
     *
     * @param evaluationIndicatorId 指标标识
     * @return 结果
     */
    EvaluationIndicator selectEvaluationByEvaluationIndicatorId(Long evaluationIndicatorId);

    /**
     * 根据指标父级ID获取指标信息
     * @param evaluationIndicator
     * @return
     */
    List<EvaluationIndicator> selectEvaluationByParentId(EvaluationIndicator evaluationIndicator);

    /**
     * 根据指标获取列表
     *
     * @param ids 指标标识
     * @return 结果
     */
    List<EvaluationIndicator> getIndicatorByIds(@Param("ids") List<String> ids);

    /**
     * 获取指标值域
     *
     * @param indicatorIds 指标标识
     * @return 结果
     */
    List<IndicatorRangeDTO> getIndicatorRangeByIndicatorIds(@Param("indicatorIds") List<String> indicatorIds);
}
